Introduction
在任务型对话系统中,NLG(Natural Language Generation)负责将Diaact转化为自然语言,如下图所示:
与传统的文本生成任务不同的是,NLG的输入是结构化的Diaact,本质上是意图和槽值对的集合,因此,NLG的重点是在保证事实一致性(意图和槽位一致)的前提下,尽可能增加自然语言文本的流畅性和多样性。
现有的NLG模型分为两类:
- Template-based methods: 人工构建模板,然后使用Diaact中的槽值替换模板的placeholder。
- Statistical language models: 在语言模型中融入Diaact的信息,使用端到端的生成模型。一个比较早期的工作是SC-LSTM,缺点是需要大量的监督数据。
因此,本文提出了一种基于预训练语言模型GPT的NLG模型SC-GPT,使用三阶段的训练策略:纯文本预训练+NLG数据预训练+目标域finetune。同时,本文基于MultiWOZ和Cambridge NLG数据集构造了一个低资源的NLG benchmark FEWSHOT-WOZ,共包含7个领域,每个领域仅有50个标注样本用作目标域finetune。
Method
如下图所示,SC-GPT类似于GPT-2模型,只是增加了Diaact的输入,作者直接以拼接的方式进行输入,同时在生成的文本序列加入[BOS]和[EOS]标识符,训练过程中只计算生成文本的损失。
作者设计三阶段的训练目标:
- Massive Plain Language Pre-training: 类似GPT-2的预训练方式
- Dialog-Act Controlled Pre-training: 在收集的Schema-Guided Dialog corpus, MultiWOZ corpus, Frame corpus, and Facebook Multilingual Dialog Corpus上进行NLG的预训练,整个数据集的规模大约为400k。
- Fine-tuning: 在目标域finetune,仅有50个标注样本。